In a communication system a communication network is provided, which can link together two communication terminals so that the terminals can send information to each other in a call or other communication event. Information may include speech, text, images or video.
Modern communication systems are based on the transmission of digital signals. Analogue information such as speech is input into an analogue to digital converter at the transmitter of one terminal and converted into a digital signal. The digital signal is then encoded and placed in data packets for transmission over a channel to the receiver of another terminal.
One type of communication network suitable for transmitting data packets is the internet. Protocols which are used to carry voice signals over an Internet Protocol network are commonly referred to as Voice over IP (VoIP). VoIP is the routing of voice conversations over the Internet or through any other IP-based network.
A data packet includes a header portion and a payload portion. The header portion of the data packet contains data for transmitting and processing the data packet. This information may include an identification number and source address that uniquely identifies the packet, a header checksum used to detect processing errors and the destination address. The payload portion of the data packet includes information from the digital signal intended for transmission. This information may be included in the payload as encoded frames such as voice frames, wherein each frame represents a portion of the analogue signal.
Degradations in the channel on which the information is sent will affect the information received at the receiving terminal. Degradations in the channel can cause changes in the packet sequence, delay the arrival of some packets at the receiver and cause the loss of other packets. The degradations may be caused by channel imperfections, noise and overload in the channel. This ultimately results in a reduction of the quality of the signal output by the receiving terminal.
When data packets are received at the destination terminal, the information provided in the header of each packet is used to order the received data packets in the correct sequence. In order to ensure that the data in the data packets may be output continuously at the destination terminal, it is necessary to introduce a delay between receiving a data packet and outputting the data in the packet, in order to overcome random variations in the delay between packets arriving at the terminal.
A jitter buffer is used at the receiving terminal to order the data packets in the correct sequence and to allow for the concealment of the variations in the propagation of the data packets. The jitter buffer is placed on the receiving path of the terminal and receives incoming data packets from the network. The jitter buffer buffers the incoming packets by introducing a delay before outputting data from the packets. Typically the jitter buffer adapts the delay according to the rate at which the packets are received from the network. The jitter buffer is also arranged to reorder the packets that arrive out of sequence into the correct sequence and to discard packets that arrive too late to be included in the correct sequence. Increasing the delay introduced by the jitter buffer reduces the number of packets that arrive too late to be included in the correct sequence. Increasing the delay introduced by the jitter buffer also conceals larger delays in the propagation of the data packets.
The function of the jitter buffer may however adversely affect the communication between the terminals. For example, if the delay introduced by the jitter buffer is too great this will adversely affect the interactivity of the real time communication.
Furthermore adapting the delay introduced by the jitter buffer will result in playing parts of the received signal either faster or slower, causing a distortion of the output signal. Although this problem may be overcome to some extent by adapting the jitter buffer delay during periods when there is no voice activity detected on the incoming signal, this limits the extent to which the jitter buffer delay may be adjusted.